package br.com.manutencaocarro.dao;

import java.util.ArrayList;
import java.util.List;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import br.com.manutencaocarro.modelo.Carro;
import br.com.manutencaocarro.modelo.Peca;

public class CarroDAO
{
	private DatabaseHelper helper;

	public CarroDAO( Context context ) {
		helper = new DatabaseHelper(context);
	}

	public void cadastraCarro( Carro carro )
	{
		ContentValues values = new ContentValues();

		new DatabaseHelper.Carro();
		values.put( DatabaseHelper.Carro.MODELO_CARRO, carro.getModelo() );
		values.put( DatabaseHelper.Carro.ANO_FABRICACAO, carro.getAno_fabricacao() );
		values.put( DatabaseHelper.Carro.ANO_MODELO, carro.getAno_modelo() );
		values.put( DatabaseHelper.Carro.NUM_PORTAS, carro.getNumPortas() );
		values.put( DatabaseHelper.Carro.ID_MONTADORA, carro.getIdMontadora());
		values.put( DatabaseHelper.Carro.NOME_MONTADORA, carro.getNomeMontadora() );

		helper.getWritableDatabase().insert( DatabaseHelper.Carro.TABELA, null, values );
	}
	
	public List<Carro> getCarro( int idCarro )
	{
		String[] args = {String.valueOf(idCarro)};
		Cursor cursor = helper.getWritableDatabase().query( DatabaseHelper.Carro.TABELA, DatabaseHelper.Carro.COLUNAS, DatabaseHelper.Carro.ID_CARRO + "=?", args , null, null, null );

		ArrayList<Carro> carros = new ArrayList<>();

		while( cursor.moveToNext() )
		{
			Carro carro = new Carro();
			carro.setId(cursor.getInt(0));
			carro.setModelo(cursor.getString(1));
			carro.setAno_fabricacao(cursor.getString(2));
			carro.setAno_modelo(cursor.getString(3));
			carro.setNumPortas(cursor.getInt(4));
			carro.setIdMontadora(cursor.getInt(5));
			carro.setNomeMontadora(cursor.getString(6));

			carros.add(carro);
		}

		return carros;
	}

	public List<Carro> getLista()
	{
		Cursor cursor = helper.getWritableDatabase().query( DatabaseHelper.Carro.TABELA, DatabaseHelper.Carro.COLUNAS, null, null, null, null, null );

		ArrayList<Carro> carros = new ArrayList<>();

		while( cursor.moveToNext() )
		{
			Carro carro = new Carro();
			carro.setId(cursor.getInt(0));
			carro.setModelo(cursor.getString(1));
			carro.setAno_fabricacao(cursor.getString(2));
			carro.setAno_modelo(cursor.getString(3));
			carro.setNumPortas(cursor.getInt(4));
			carro.setIdMontadora(cursor.getInt(5));
			carro.setNomeMontadora(cursor.getString(6));

			carros.add(carro);
		}

		return carros;
	}
	
	public void close(){
		helper.close();
	}

	public void atualiza(Carro carro) {
		ContentValues values = new ContentValues();

		new DatabaseHelper.Carro();
		values.put( DatabaseHelper.Carro.MODELO_CARRO, carro.getModelo() );
		values.put( DatabaseHelper.Carro.ANO_FABRICACAO, carro.getAno_fabricacao() );
		values.put( DatabaseHelper.Carro.ANO_MODELO, carro.getAno_modelo() );
		values.put( DatabaseHelper.Carro.NUM_PORTAS, carro.getNumPortas() );
		values.put( DatabaseHelper.Carro.ID_MONTADORA, carro.getIdMontadora());
		values.put( DatabaseHelper.Carro.NOME_MONTADORA, carro.getNomeMontadora());

		String[] args = {carro.getId().toString()};
		helper.getWritableDatabase().update( DatabaseHelper.Carro.TABELA, values, DatabaseHelper.Carro.ID_CARRO + "=?", args );
	}
	
	public void deleta( Carro carro )
	{
		new DatabaseHelper.Carro();
		String[] args = {carro.getId().toString()};
		try {
			PecaDAO dao = new PecaDAO( helper.getCONTEXT() );
			List<Peca> lista = dao.getLista(carro.getId());
			dao.close();
			
			if( lista.size() > 0 )
			{
				helper.getWritableDatabase().delete( DatabaseHelper.Peca.TABELA, DatabaseHelper.Carro.ID_CARRO + "=?", args );
			}
			
			helper.getWritableDatabase().delete( DatabaseHelper.Carro.TABELA, DatabaseHelper.Carro.ID_CARRO + "=?", args );
			helper.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}